import { createCrawl, createCrawlOpenAI } from 'x-crawl' //爬虫工具
import dotenv from 'dotenv'   //环境变量工具
dotenv.config()   //加载环境变量

//创建爬虫
const crawlApp = createCrawl({
    maxRetry: 3, //最大重试次数，默认为3
    intervalTime: 1000, //重试间隔时间，默认为1000ms
})

//创建openAI爬虫
const crawlOpenAI = createCrawlOpenAI({
    clientOptions: {
        apiKey: process.env.openAIKey, //openAI的API密钥，从环境变量中获取
    },
    defaultModel: 'gpt-4.1',
})

crawlApp.crawlPage('https://movie.douban.com/chart').then(async (res) => {
    //const html = res.data //获取页面的HTML内容
    //console.log(res.data) //打印HTML内容
    const { page, browser } = res.data //获取页面的HTML内容

    const targetSelector = '.article'
    await page.waitForSelector(targetSelector) //等待页面加载完成
    const highlyHTML = await page.$eval(targetSelector, (element) => element.innerHTML) //获取目标元素的HTML内容
    //console.log(highlyHTML) //打印HTML内容

    //让ai解析html内容
    const result = await crawlOpenAI.parseElements(
        highlyHTML,
        `获取电源评分，将评分不小于8.0的电影名称和评分，用json格式返回。
        {
            "name": "电影名称",
            "score": "电影评分"
            "img": "电影图片"
        }
        `
    )
    browser.close() //关闭浏览器
    console.log(result) //打印解析结果
})

